#include "common.h"
//单例模式
class CentralCache//跟threadcache结构类似，也是根据申请空间大小设计的hash桶结构，只不过上面挂的是span
{
private:
	spanlist _centralspanlistarray[nfreelist];//有208个spanlist，每个spanlist中的span中还有freelist作为小的内存块，
	//注意这里不同的进程如果需要同一个spanlist中的内存会出现竞争，也就需要锁。这里创建了208个桶，也就对应需要208个锁
	static CentralCache _sInst;
public:
	static CentralCache* getcentralcache()
	{
		return &_sInst;
	}
	span* Getonespan(spanlist& list, size_t size);
	size_t FetchRangobj(void*& start, void*& end, size_t batchNum, size_t size,size_t index);
	void realse_to_central_span(void* start, size_t index);
private:
	CentralCache()
	{}
	CentralCache(const CentralCache&) = delete;//将构造函数和拷贝构造函数私有化
};

